/**
 * 状态校验： 根据后台字段进行调整 业务处理
 * @param {number} status - 业务状态
 * @param {string} msg - 提示信息
 * @param {string} errorMessageMode - 错误信息提示方式
 */
import { useUserStore } from "@/stores/modules/user";
import { useI18n } from "vue-i18n";
import { useMessage } from "@/hooks/web/useMessage";

const { createMessage, createErrorModal } = useMessage();

export function checkStatus(status, msg, errorMessageMode = "message") {
  const { t } = useI18n();
  const userStore = useUserStore();
  let errMessage = "";

  switch (status) {
    case 400:
      errMessage = `${msg}`;
      break;
    case 401:
      // 未登录
      // 如果没登录，跳转到登录页面并携带当前页面的路径
      // 登录成功后返回当前页面，该步骤需要在登录页面进行操作
      userStore.clearUser();
      errMessage = msg || t("sys.errMsg401");
      // 此处执行退出操作
      break;
    case 404:
      errMessage = msg || t("sys.errMsg404");
      break;
    default:
  }

  if (errMessage) {
    if (errorMessageMode === "modal") {
      // 业务错误提示
      createErrorModal({ title: t("sys.errorTip"), content: errMessage });
    } else if (errorMessageMode === "message") {
      // 普通错误
      createMessage.error({
        content: errMessage,
        key: `global_error_message_status_${status}`,
      });
    }
  }
}
